# 定义父类
class Animal:
    def __init__(self, name):
        self.name = name
    def eat(self):
        print(f'{self.name}会吃东西')
    def drink(self):
        print(f'{self.name}正在喝水')
    def run(self):
        print(f'{self.name}正在奔跑')
    def sleep(self):
        print(f'{self.name}喜欢睡觉')
# 定义子类
class Dog(Animal):
    # 调用构造方法，如果子类有，就不再调用父类构造方法
    def __init__(self, name, type, age):
        # 手动调用父类的方法
        Animal.__init__(self, name)
        self.type = type
        self.age = age
    def say(self):
        print(f'这是{self.name}，品种是{self.type}，年龄是{self.age}')
    def bark(self):
        print(f'{self.name}正在狂吠')

if __name__ == '__main__':
    # 通过子类实例化对象
    d1 = Dog('大黄', '金毛', 0.5)
    # 查看是否有属性
    print(d1.name)
    d1.say()
    # 调用父类的方法
    d1.eat()
    d1.drink()
    d1.run()
    d1.sleep()
    d1.bark()